jihyeon's Blog

2023-11-11

프린터 큐


https://www.acmicpc.net/problem/1966

프린트 우선순위 큐

[(i, idx) for idx, i in enumerate(queue)]문법 숙지 필요 key=lambda x: x[0]문법 숙달 필요

내가 쓴 답변

# 1. m과 같은지 식별하기 위한 값을 설정해줘야하므로 튜플 형식 필요 # 2. 출력될 때마다 +1씩 되는 카운트 생성 # 3. 리스트에서 가장 큰 값을 저장(max와 lambda를 이용해 대체함) # 4. 맨 왼쪽 요소의 값과 가장 큰 값을 비교해 작다면 맨 뒤로 # 5. 같다면 => 카운트 +1한 뒤 제거 => m과 같은지 비교해 카운트 출력 import sys test_case = int(sys.stdin.readline()) for _ in range(test_case): n, m = list(map(int, sys.stdin.readline().split())) data = list(map(int, sys.stdin.readline().split())) print_queue = [(idx, i) for idx, i in enumerate(data)] count = 0 current = 0 while True: if print_queue[0][1] == max(print_queue, key=lambda x: x[1])[1]: current = print_queue.pop(0) count += 1 if current[0] == m: print(count) break else: current = print_queue.pop(0) print_queue.append(current)

다른 답변

test_case = int(input()) for _ in range(test_case): n, m = list(map(int, input().split())) queue = list(map(int, input().split())) queue = [(i, idx) for idx, i in enumerate(queue)] count = 0 while True: if queue[0][0] == max(queue, key=lambda x: x[0]): count += 1 if queue[0][1] == m: print(count) break else: queue.pop(0) else: queue.append(queue.pop(0))

Copyright (c) 2023. jihyeon Choi. | All Right Reserved.